﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace GIFT
{



    public partial class VentanaRelacionActividades : Form
    {
        //Variables globales
        private List<string> relacionesMadreHija;
        private List<string> relacionesHermana;
        private ControlActividad controlActividad;
        private Actividad actividad;

        public VentanaRelacionActividades(Actividad act)
        {
            InitializeComponent();
            nombreActividadActual.Text = act.getNombre();
            this.actividad = act;
            controlActividad = new ControlActividad();
            //Llena las listas
            relacionesMadreHija = new List<string>();
            relacionesHermana = new List<string>();            
            relacionesMadreHija.Add("Obligatoriedad");
            relacionesMadreHija.Add("Opcionalidad");
            relacionesHermana.Add("Secuencialidad");
            relacionesHermana.Add("Exclusividad");
            relacionesHermana.Add("Simultaneidad");
            //llenarRelaciones();//Llena las relaciones que posee la actividad
            llenar_otras_actividades();

        }
        private void llenar_otras_actividades()
        {
            ArrayList nombres = controlActividad.obtenerActividadesCompuestas();
            if (nombres.Count != 0)
            {
                for (int x = 0; x < nombres.Count; ++x)
                {
                    if (nombres[x].ToString() != nombreActividadActual.Text)
                    {
                        campoOtraActividad.Items.Add(nombres[x].ToString());
                    }
                }
            }
        }

        //captura el evento del click en salir
        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        //Captura el evento de la eleccion de un indice en el campo de otras actividades
        private void campoOtraActividad_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (campoOtraActividad.SelectedIndex != -1)
            {
                String relacion = relacionExistente(campoOtraActividad.Text, "relacion");
                if (relacion != "")
                {
                    campoRelacion.Text = relacion;
                    campoTipoRelacion.Text = relacionExistente(campoOtraActividad.Text, "tipoRelacion");
                    campoRelacion.Enabled = true;
                    campoTipoRelacion.Enabled = true;
                    botonEstablecer.Enabled = false;
                    botonQuitar.Enabled = true;
                }
                else
                {
                    campoRelacion.SelectedIndex = -1;
                    campoTipoRelacion.SelectedIndex = -1;
                    campoRelacion.Enabled = true;
                    campoTipoRelacion.Enabled = true;
                    botonEstablecer.Enabled = false;
                    botonQuitar.Enabled = false;
                }
            }
        }

        //Busca el dato que recibe de la relacion que tiene con la actividad que recibe, si no existe retorna ""
        private String relacionExistente(String nombreActividad, String tipo)
        {
            String respuesta = "";
            int posicion = actividad.posicion_de_actividadRelacionada(nombreActividad);
            if (posicion != -1)
            {
                RelacionActividades temporal = actividad.obtener_datos_de_relacion(posicion);
                switch (tipo)
                {
                    case "tipoRelacion":
                        respuesta = temporal.get_tipoRelacion();
                        break;
                    case "relacion":
                        respuesta = temporal.get_relacion();
                        break;
                }

            }
            return respuesta;
        }

        //Captura el evento de la eleccion de un indice en el campo de relacion
        private void campoRelacion_SelectedIndexChanged(object sender, EventArgs e)
        {
            campoTipoRelacion.Items.Clear();
            if (campoRelacion.SelectedIndex != -1)
            {
                if (campoRelacion.Text == "Madre-Hija")
                {
                    campoTipoRelacion.Items.AddRange(relacionesMadreHija.ToArray());
                }
                else
                {
                    campoTipoRelacion.Items.AddRange(relacionesHermana.ToArray());
                }
            }
            botonEstablecer.Enabled = false;
            botonQuitar.Enabled = false;
        }

        //Captura el evento de la eleccion de un indice en el campo de un tipo de relacion
        private void campoTipoRelacion_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (campoTipoRelacion.SelectedIndex != -1)
            {
                botonEstablecer.Enabled = true;
                botonQuitar.Enabled = false;
            }
        }

        //Captura el evento del click en el boton establecer
        private void botonEstablecer_Click(object sender, EventArgs e)
        {
            botonEstablecer.Enabled = false;
            botonQuitar.Enabled = true;
        }

        //Captura el evento del click en el boton quitar
        private void botonQuitar_Click(object sender, EventArgs e)
        {
            botonEstablecer.Enabled = true;
            botonQuitar.Enabled = false;
        }





    }//fin de la clase
}
